****************************************
* RELEASE NOTES for GeoGebra 3.0
*  Markus Hohenwarter
*  http://www.geogebra.org
****************************************

****************************************
* GeoGebra 3.0 (Beta 2) - July 29, 2007
****************************************

If you discover a bug in this Beta version, please report it 
to Markus Hohenwarter (mhohen@gmail.com). Thank you!

************************
* New in User Interface
************************

* User Defined Tools  
  - You can now create your own tools based on an existing construction.
    Choose "Create new tool" in the "Tools" menu, specify the output
    and input objects of your tool and choose a name for the toolbar
    and a command name.    
  - Your tool can be used both with the mouse and as a command in 
    the input field. All tools are automatically saved in your 
    "ggb" construction file.
  - You can use any image for the toolbar icon. GeoGebra resizes your
    image automatically to 32x32 pixels.
  - Use the "Manage tools" dialog (menu "Tools") to change the names or
    the icon of your tools. You can also delete or save selected tools there.
  - You can save selected tools in a GeoGebra Tools File ("ggt"). 
    This file can be opened at any time by using "File", "Open" to load its
    tools in another construction. 
    Note that opening a "ggt" file does not change your current construction, 
    but opening a "ggb" file does.  

* Customizeable Toolbar
  You can now customize the tools in GeoGebra's toolbar (menu "Tools"). This is
  especially useful for creating dynamic worksheets that include a restricted
  toolbar. The toolbar setting is saved with your construction in a .ggb file.

* Persistence / Saveable Settings
  GeoGebra now remembers your favorite settings (menu "Options", "Save settings"),
  your last four ggb files and working directory.

* Selection Rectangle
  Choose "move" mode, then press and hold the left mouse key to pull up a rectangle 
  that lets you select multiple objects. You may then move multiple objects by
  dragging one of the selected. The selection rectangle can also be used to 
  specify a part of the graphics window for printing, exporting pictures
  and for dynamic worksheets (see "File" menu).

* New Properties Dialog
  - The objects in the properties dialog ("Edit" menu) are now organized 
    by types (points, lines, etc.) which makes it much easier to handle large
    numbers of objects. 
  - On the right side, the different elements are now organized in tabs.
  - Name and definition of objects can be changed directly in text fields.
  - Selection rectangle can be used to select several objects from the
    graphics window

* Axes scaling by dragging
  Choose "move drawing pad" mode and drag one of the axes to change its scale.
  You can also do this from any other mode by pressing Shift and then drag an axis.
  Note: Shift + Drag also lets you move the drawing pad.

* Axes properties (right click on drawing pad)
  - hide/show coordinate axes individually
  - hide/show minor or all ticks
  - bold axes styles

* Labelling of new objects
  In the "Options" menu you can now specify whether the label of a newly created
  object should be shown or not. Note: The setting "Automatic" shows labels 
  when the algebra window is open while you create new objects.

* Fast renaming
  After creating a new object or selecting an existing one, start typing to 
  rename this object.

* Press "Esc" key to close an open dialog or to get back to "Move" mode

* Enhanced MacOS X Support
  - Menu bar is on top of screen
  - Keyboard shortcuts use Command/Apple key on Mac and Control key on other platforms 
  - Double click on ggb file opens it in GeoGebra

********************
* New in Toolbar
********************

* New Tool: "Regular polygon"
    specify two points on the polygon and the total number of vertices

* New Tool: "Area" 
    of polygon, circle, ellipse

* New Tool: "Slope"
    of line 

* New Tool: "Checkbox to show and hide objects"
    lets you create a checkbox (boolean value) to show and hide other objects
    Note: this is done using the advanced option "Condition to show object"
          (see properties dialog)

* Extended Tool: "Distance and length" now shows dynamic texts for
   - distance of two points, length of segment
   - distance between point and line
   - circumference of circle and circular sector
   - perimeter of polygon
  
********************
* New Features
********************

* Point on Polygon
  You can now create a point on the outline of a polygon by selecting 
  the "New point" tool and clicking on a polygon.

* Point on Locus Line
  You can now put a point on a locus line using the "New point" tool.

* Parametric curves
    Curve[ expression, expression, variable, from, to ]
  e.g. c = Curve[ 2 cos(t), 2 sin(t), t, 0, 2pi ]
  The from and to parameters are dynamic, i.e. you can use slider variables there.
  Curves can be used like functions in arithmetic expressions, e.g. c(3) returns a
  point that depends on the curve. You can also place a point on a curve.
  New commands:
    Derivative[ <Curve> ]

* Lists of objects
  e.g. L = { A, B, C }

* Sequence command to generate lists of objects:
    Sequence[ expression, variable, from, to ]
    Sequence[ expression, variable, from, to, step ]
  e.g. L = Sequence[ (2, i), i, 1, 5 ]
  The from and to parameters are dynamic, i.e. you can use slider variables there.

* Continuity of intersection points: 
  You can now turn on/off the continuity heuristic in the options menu. GeoGebra uses a 
  near-to-heuristic to keep moving intersection points (line-conic, conic-conic) close to 
  their old positions and avoid jumping intersection points. However, in some situations 
  this heuristic leads to unwanted results, so you can now turn it on or off in the 
  options menu. By default this heuristic is now turned off.
  Note: for user defined tools continuity is always turned off.

* New built in operations / functions
   - Euler constant introduced: the exponential function can now 
	be written both as e^x or exp(x)
   - New logarithm functions:
       ln(x) or log(x) for natural logarithm (of e)
       ld(x) for logarithm of 2
	 lg(x) for logarithm of 10
   - unary plus like in +4 * -2 is valid now
   - random() for a random number between 0 and 1
       select in algebra window and use arrow keys to get a new value
   - cbrt(x) for cubic root function (supports derivative and integral too)

* Boolean values ("true" and "false") and operations ("and", "or", "not",
   <, <=, >=, >, "equal", "unequal", "parallel" and "perpendicular", 
  (see list next to input field).

* Condition to show object
  In the properties dialog you can now specify a condition for the visibility
  of an object  in the graphics window (see "advanced" tab).

* Conditional functions, e.g. f(x) = If[ x < 3, sin(x), x^2 ]
  You can use derivatives and integrals of such functions and intersect them.

* Decorations for segments and angles
  In the properties dialog you can choose ticks and arcs 
  to decorate segments and angles

* Size of drawingpad is saved in ggb files now

* Export of dynamic worksheets
   - new dialog with "advanced" tab to set applet parameters

* Export drawing pad as picture: new formats ...
   - Scaleable Vector Graphics (SVG)
   - Enhanced Metafile Format (EMF)
   - PSTricks (for LaTeX), contribution by Lo�c Le Coq


********************
* New Commands
********************

AffineRatio[ <Point A>, <Point B>, <Point C> ]
  returns the affine ratio lambda of three collinear points, 
  where C = A + lambda * AB

Area[ <Conic> ]
  returns the area of a circle or ellipse

Circumference[ conic ]
  returns the circumference of a circle

CrossRatio[ <Point A>, <Point B>, <Point C>, <Point D> ]
  returns the cross ration lambda of four collinear points,
  where lambda = AffineRatio[B, C, D] / AffineRatio[A, C, D]

Curvature[ <Point A>, <Function f> ]
  returns the curvature of f in point A

Curvature[ <Point A>, <Curve c> ]
  returns the curvature of c in point A

CurvatureVector[ <Point A>, <Function f> ]
   returns the curvature vector of f in point A
CurvatureVector[ <Point A>, <Curve c> ]
   returns the curvature vector of c in point A

Curve[ expression, expression, variable, from, to ]
  creates a parametric curve, e.g. Curve[ 2 cos(t), 2 sin(t), t, 0, 2pi ]

Div[ <Number a>, <Number b> ]
  returns the integer quotient of a and b

Element[ <List l>, <Number n> ]
  returns the n-th element of list l

Iteration[ f(x), x0, n ] 
  returns f applied n-times to x0
IterationList[ f(x), x0, n ]
  returns a list of the results of applying f to x0 0 through n times

Length[ <Function>, <Number x1>, <Number x2> ]
  returns the length of the function graph between two x1 and x2
Length[ <Function>, <Point>, <Point> ]
  returns the length of the function graph between two points on the graph
Length[ <Curve>, <number t1>, <number t2> ]    
  returns the length of the curve between two t1 and t2
Length[ <Curve>, <Point>, <Point> ]
  returns the length of the curve between two points on the curve
Length[ <List l> ]
  returns the number of elements of list l

Max[ <Number a>, <Number b> ]
  returns the maximum of a and b
Max[ <List l> ]
  returns the largest number in list l
Min[ <Number a>, <Number b> ]
  returns the minimum of a and b
Min[ <List l> ]
  returns the smallest number in list l

Mod[ <Number a>, <Number b> ]
  returns gives the remainder on division of a by b

Name[object]
   returns text showing the name of the given object

OsculatingCircle[ <Point A>, <Function f> ]
  returns the osculating circle of f in point A
OsculatingCircle[ <Point A>, <Curve c> ]
  returns the osculating circle of c in point A

Perimeter[ polygon ]
  returns the perimeter of a polygon

Polygon[ <Point A>, <Point B>, <Number n> ] 
  creates a regular polygon with n points where A and B are the
  first two vertices

Sequence[ expression, variable, from, to ]
Sequence[ expression, variable, from, to, step ]
  creates a list of objects, e.g. Sequence[ (2, i), i, 1, 5 ]

Tangent[ <Point A>, <Curve c> ]
  returns the tangent to curve c in point A

********************
* JavaScript and Applets
********************

* new reset icon ("refresh" instead of "GeoGebra ellipse")
* GeoGebraApplet to JavaScript communication: listeners for add, remove, rename, update
* a lot of new methods to access the GeoGebraApplet from JavaScript
  see http://www.geogebra.org/source/program/applet/geogebra_applet_javascript.html
* applet parameter "rightClickEnabled" to disable context menus and properties dialog
   
********************
* New Languages
********************

Arabic, Bulgarian, Finish, Greek, Macedonian, Polish, Portuguese of Portugal, 
Persian, Turkish, Vietnamese

********************
* Documentation
********************

The "GeoGebra Help" document has been revised, comes in a new design 
and is easily searchable (see "Help" menu in GeoGebra).

********************
* Enhancements 
********************

* entering functions using "y=" is now possible, e.g. "y = sin(x)" is now
  understood as "sin(x)"
* f(x) = x^(1/n) where n is an odd integer is now defined for negative x too
* mirroring of a point at a line using line/circle intersections is now possible
* specify name of slider on creation in slider dialog
* objects that are undefined when created are now shown in algebra window 
  (except intersection points)
* new plotting algorithm for functions and curves
* smoother plotting of functions, locus lines and hyperbolas
* click on input button toggles between input field mode and move mode
* selected toolbar button shows blue border
* default label of polygons changed from "P" to "poly"
* intersection of functions, function-line
    - automatic adaption of start value when startpoint has no name
      (i.e. when you clicked on the intersection to get it)
* root finding of non-polynomial functions
    - false position replaced by Brent's method in Root[f, a, b]
    - added automatic valid domain search for Newton's and Brent's method

********************
* Bugs fixed
********************

* location of single intersection points after reopening file fixed
* location of tangents to circle after reopening file fixed
* made intersection of conic sections numerically stabler
* made intersection of lines numerically stabler
* corner command of images
* text keeps formating when edited now
* Esc-key in input field clears text again
* test point-on-parabola in vertex position fixed
* line through point at infinity works again
* slider with show label "name" is saved correctly now
* intersect line-conic: first-intersection initing problem fixed
* Function[ <constant number variable>, from, to ] works now
* Mode "Input Field": input field gets focus again after selecting object in algebra window
